package com.tbit.uqbike.webmanager.controller;

import com.tbit.uqbike.object.pojo.vo.ForceFinishSumVO;
import com.tbit.uqbike.object.pojo.vo.ForceFinishVO;
import com.tbit.common.entity.view.PageResult;
import com.tbit.common.entity.view.Result;
import com.tbit.uqbike.service.business.ForceFinishService;
import com.tbit.uqbike.webmanager.util.excel.ExcelUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * 强制还车日志导出
 *
 * @author yee_
 * @version 1.0
 * @date 2023/4/21 14:36
 */
@RestController
@RequestMapping("/forceFinish")
public class ForceFinishController {

    @Resource
    private ForceFinishService forceFinishService;


    /**
     * 查询强制强制还车日志
     *
     * @param accountId 运营区域id
     * @param orderNo   订单编号
     * @param phone     用户手机号
     * @param machineNo 设备编号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param page      分页参数
     * @param size      页码
     * @return 。
     */
    @GetMapping("/listPage")
    public Result<PageResult<ForceFinishVO>> listPage(@RequestParam Integer accountId, String orderNo, String phone, String machineNo,
                                                      Long startTime, Long endTime,
                                                      @RequestParam(required = false, defaultValue = "1") Integer page,
                                                      @RequestParam(required = false, defaultValue = "10") Integer size) {
        return forceFinishService.listPage(accountId, orderNo, phone, machineNo, startTime, endTime, page, size);
    }

    /**
     * 导出强制强制还车日志
     *
     * @param accountId 运营区域id
     * @param orderNo   订单编号
     * @param phone     用户手机号
     * @param machineNo 设备编号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 。
     */
    @GetMapping("/export")
    public Result<Object> export(@RequestParam Integer accountId, String orderNo, String phone, String machineNo,
                                 Long startTime, Long endTime) {
        final Result<List<ForceFinishVO>> pageResultResult = forceFinishService.export(accountId, orderNo, phone, machineNo, startTime, endTime);
        ExcelUtil<ForceFinishVO> excelUtil = new ExcelUtil<>(ForceFinishVO.class);
        return Result.success(excelUtil.exportExcel(pageResultResult.getData(), "强制还车日志").getData());
    }

    /**
     * 强制还车统计分析
     *
     * @param accountId 运营区域id
     * @param type      统计类型 1-按手机号统计 2-按设备编号统计
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param page      分页参数
     * @param size      页码
     * @return 。
     */
    @GetMapping("/sumBy")
    public Result<PageResult<ForceFinishSumVO>> sumBy(@RequestParam Integer accountId, Integer type, Long startTime, Long endTime,
                                                      @RequestParam(required = false, defaultValue = "1") Integer page,
                                                      @RequestParam(required = false, defaultValue = "10") Integer size) {
        List<Integer> typeList = Arrays.asList(1, 2);
        if (type == null || !typeList.contains(type)) {
            return Result.error("请选择统计类型");
        }
        if (startTime == null || endTime == null) {
            return Result.error("请选择开始时间和结束时间");
        }
        return forceFinishService.sumBy(accountId, type, startTime, endTime, page, size);
    }

}
